home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / enigma / earcd / comm / comm5 / nwsbrkr5.lha / Reader / NewsBreaker / src / gui / Menu.c < prev   
Text File  |  1996-12-14  |  5KB  |  154 lines

  1. /*----------------------------------------------------------------------
  2.                                   menu
  3.   ----------------------------------------------------------------------*/
  4.  
  5. /* todo: dynamisch erzeugen -- GadTools-NewMenu-Struktur: */
  6.  
  7. /*
  8.    Gadtools Menus
  9.    Die Gadtools.library erzeugt aus der NewMenu-Struktur eine
  10.    intuition-fertige Menu-Struktur. Das spart Programmierarbeit.
  11.  
  12.    todo:
  13.  
  14.    1. Init Defaults
  15.    - NewMenu ist default Menustruktur, intern
  16.    - daraus eine Execliste bauen, Eintragungen
  17.  
  18.    2. MenuNew: Während Laufzeit
  19.    - daraus eine Menustruktur dynamisch bauen
  20.    -- Liste durchgehen und Einträge zählen (CountMynNodes)
  21.    -- menus-Speicher reservieren für menus[nodeanzahl+endmarke]
  22.    mit endmarke = 1,
  23.    Test ob Speicher OK
  24.    -- Liste durchgehen und Einträge in menus[i++] übertragen
  25.    -- Endmarke ist sowieso gesetzt, da Speicher = 0
  26.    -- menus[] an gadtools übergeben und layouten/darstellen lassen
  27.    -- menus-Speicher freigeben.
  28.  
  29.    3. MenuEdit
  30.    (nachdem: Menupunkte gelöscht/geändert in Execliste:)
  31.    hier:
  32.    - Menubar abschalten
  33.    - erneut (2.) durchlaufen, schaltet Menus an.
  34.  
  35.    4. MenuDispose
  36.    - Menubar abschalten
  37.    - Menus weg
  38.    - Execliste aus Speicher entfernen
  39.  
  40.  */
  41.  
  42. /*
  43.    Entwurf Menu-Node:
  44.    {
  45.    UBYTE nm_Type;
  46.    STRPTR nm_Label;
  47.    char[4] --  STRPTR nm_CommKey;
  48.    UWORD nm_Flags;
  49.    LONG nm_MutualExclude; ------- problem!!!
  50.    APTR nm_UserData;
  51.    }
  52.  */
  53.  
  54. static struct NewMenu menus[] =
  55. {
  56.   {NM_TITLE, "Projekt", 0, 0, 0, 0},
  57.   {NM_ITEM, "Über " NB_NAME, "?", 0, 0, (APTR) OPEN_ABOUT},
  58.   {NM_ITEM, "Hilfe...", 0, 0, 0, (APTR) OPEN_AMIGAGUIDE},
  59.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  60.   {NM_ITEM, NB_NAME " Befehlsreferenz", 0, 0, 0, (APTR) DISPLAY_HELP},
  61.   {NM_ITEM, NB_NAME " Fehlerliste", 0, 0, 0, (APTR) DISPLAY_BUGS},
  62.   {NM_ITEM, NB_NAME " Fehlerbericht", 0, 0, 0, (APTR) DISPLAY_BUGREPORT},
  63.   {NM_ITEM, NB_NAME " Wunschzettel", 0, 0, 0, (APTR) DISPLAY_FEATUREWISH},
  64.   {NM_ITEM, NB_NAME " Bestellschein", 0, 0, 0, (APTR) DISPLAY_ORDERFORM},
  65.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  66.   {NM_ITEM, "Ende", "Q", 0, 0, (APTR) QUIT_NEWSBREAKER},
  67.  
  68.   {NM_TITLE, "Text", 0, 0, 0, 0},
  69.   {NM_ITEM, "Ausschneiden", "X", 0, 0, (APTR) CUT_TEXTFIELD},
  70.   {NM_ITEM, "Kopieren", "C", 0, 0, (APTR) COPY_TEXTFIELD},
  71.   {NM_ITEM, "Alles kopieren", "K", 0, 0, (APTR) COPYALL_TEXTFIELD},
  72.   {NM_ITEM, "Einfügen", "V", 0, 0, (APTR) PASTE_TEXTFIELD},
  73.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  74.   {NM_ITEM, "Wiederherstellen", "U", 0, 0, (APTR) UNDO_TEXTFIELD},
  75.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  76.   {NM_ITEM, "Löschen", "E", 0, 0, (APTR) ERASE_TEXTFIELD},
  77.  
  78.   {NM_TITLE, "Lesen", 0, 0, 0, 0},
  79.   {NM_ITEM, "Gruppe wählen...", "G", 0, 0, (APTR) GET_NEW_GROUP},
  80. {NM_ITEM, "Nachricht wählen...", "N", 0, 0, (APTR) DISPLAY_SELECTED_MESSAGE},
  81.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  82.   {NM_ITEM, "Nächste Nachricht", "+", 0, 0, (APTR) DISPLAY_NEXT_MESSAGE},
  83.   {NM_ITEM, "Vorherige Nachricht", "-", 0, 0, (APTR) DISPLAY_PREV_MESSAGE},
  84.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  85.   {NM_ITEM, "eMails wählen", "M", 0, 0, (APTR) GET_MAIL_GROUP},
  86.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  87.   {NM_ITEM, "Catch-up", "#", 0, 0, (APTR) CATCHUP_CURRENT_GROUP},
  88.   {NM_ITEM, "Löschen", "^", 0, 0, (APTR) DELETE_MESSAGE_SAFELY},
  89.  
  90.   {NM_TITLE, "Schreiben", 0, 0, 0, 0},
  91.   {NM_ITEM, "Reply", "R", 0, 0, (APTR) WRITE_REPLY_MESSAGE},
  92.   {NM_ITEM, "FollowUp", "F", 0, 0, (APTR) WRITE_FOLLOWUP_MESSAGE},
  93.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  94.   {NM_ITEM, "eMail", "E", 0, 0, (APTR) WRITE_EMAIL_MESSAGE},
  95.   {NM_ITEM, "Posting", "P", 0, 0, (APTR) WRITE_POSTING_MESSAGE},
  96.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  97.   {NM_ITEM, "Nachricht speichern...", 0, 0, 0, (APTR) SAVE_MESSAGE},
  98.   {NM_ITEM, "Nachricht drucken...", 0, 0, 0, (APTR) PRINT_MESSAGE},
  99.  
  100.   {NM_TITLE, "Einschränkungen", 0, 0, 0, 0},
  101.   {NM_ITEM, "Alle Nachrichten", "1", CHECKIT, ~1, (APTR) SET_FOCUS_ALL_MSG},
  102.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  103.   {NM_ITEM, "25 letzte Nachrichten", "2", CHECKIT, ~4, (APTR) SET_FOCUS_LAST25_MSG},
  104.   {NM_ITEM, "Nur neue Nachrichten", "3", CHECKIT | CHECKED, ~8, (APTR) SET_FOCUS_NEW_MSG},
  105.  
  106.   {NM_TITLE, "Fenster", 0, 0, 0, 0},
  107.   {NM_ITEM, "Alles schließen n/a", 0, 0, 0, 0},
  108.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  109.   {NM_ITEM, "Snapshot n/a", 0, 0, 0, 0},
  110.  
  111.   {NM_TITLE, "Debug-Tools", 0, 0, 0, 0},
  112.   {NM_ITEM, "zeige (F)ields der aktuellen Message", "F", 0, 0, (APTR) DEBUG_SHOWUMSFIELD},
  113.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  114. {NM_ITEM, "zeige globale Var(i)ablen", "I", 0, 0, (APTR) DEBUG_SHOWGLOBALS},
  115.   {NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
  116.   {NM_ITEM, NB_AUTHOR_NAME " anmailen", 0, 0, 0, (APTR) WRITE_EMAIL_MESSAGE},
  117.  
  118.   {NM_END, NULL, 0, 0, 0, 0}
  119. };
  120.  
  121. BOOL
  122. CreateMyMenus (void)
  123. {
  124.   BOOL okay = FALSE;
  125.  
  126.   /* erzeuge und layoute Menu */
  127.   visual_info = GetVisualInfo (Mywindow->WScreen, TAG_END);
  128.  
  129.   if (visual_info)
  130.     {
  131.       strip = CreateMenus (menus, TAG_END);    /* todo: mehrere Defaultmenus? */
  132.  
  133.       if (strip)
  134.     if (LayoutMenus (strip, visual_info, GTMN_NewLookMenus, TRUE, TAG_END))
  135.       if (SetMenuStrip (Mywindow, strip))
  136.         {
  137.           okay = TRUE;    /* Menü 100% ok */
  138.         }
  139.     }
  140.   return (okay);
  141. }
  142.  
  143. void
  144. RemoveMyMenus (void)
  145. {
  146.   /* Menu Strukturen entfernen */
  147.   if (Mywindow->MenuStrip)
  148.     ClearMenuStrip (Mywindow);
  149.   if (strip)
  150.     FreeMenus (strip);
  151.   if (visual_info)
  152.     FreeVisualInfo (visual_info);
  153. };
  154.